package com.skt.domain.DTO.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;
import java.time.LocalDate;

/**
 * 管理员查询租赁订单列表的请求参数
 *
 * 说明：
 * - 用于 GET /admin/orders 接口。
 * - 支持按订单状态、时间范围、用户/商家关键词、订单编号等条件筛选。
 * - 分页参数由通用分页拦截器或 BaseController 统一处理，此处仅包含业务查询条件。
 * - 所有字段均为可选，空值表示不作为查询条件。
 */
@Data
public class OrderQueryRequest {

    @Schema(description = "订单编号（模糊匹配）", example = "R20251026")
    private String orderNo;

    @Schema(description = "租用人姓名（模糊匹配）", example = "张三")
    private String userName;

    @Schema(description = "商家名称（模糊匹配）", example = "汉服坊")
    private String merchantName;

    @Schema(description = "订单状态：1-待支付，2-已支付，3-已取货，4-已归还，5-已取消", example = "2")
    private Integer status;

    @Schema(description = "租赁开始日期（起始，包含）", example = "2025-10-01")
    private LocalDate startDate;

    @Schema(description = "租赁结束日期（截止，包含）", example = "2025-10-31")
    private LocalDate endDate;

    @Schema(description = "当前页码（从1开始）", example = "1")
    @Min(value = 1, message = "页码必须 >= 1")
    private Integer pageNum = 1;

    @Schema(description = "每页条数（建议 10~100）", example = "20")
    @Min(value = 1, message = "每页条数必须 >= 1")
    private Integer pageSize = 20;
}